@echo off :: ================================= :: "Microsoft Office LTSC 專業增強版 2021" :: DownloadOffice2021.bat 2024-01-16 12:57 :: :: Office Deployment Tool :: https://www.microsoft.com/en-us/download/details.aspx?id=49117 :: :: 設定 KMS 主機電腦以啟用大量授權版本的 Office :: https://learn.microsoft.com/zh-tw/deployoffice/vlactivation/configure-a-kms-host-computer-for-office :: :: ==== :: November 21, 2023 11/22/2023 :: set "URLFile=https://download.microsoft.com/download/2/7/A/27AF1BE6-DD20-4CB4-B154-EBAB8A7D4A7E/officedeploymenttool_16731-20398.exe" :: set "Version=16.0.16731.20398" :: set "DatePublished=11/22/2023" :: set "FileName=officedeploymenttool_16731-20398.exe" :: :: %Public%\Downloads\OfficeProPlus2021\16.0.16731.20398\Office\Data\v64_16.0.14332.20604.cab :: set "OfficeData=16.0.14332.20604" :: set "DataFileSize=1.78 GB" :: ================================= if "%~1"=="" ( set "EndCmd=k" ) else ( set "EndCmd=%~1" ) rem ====---- AutoToRun if "%~2"=="" ( set /a AutoToRun=0 ) else ( set "AutoToRun=1" ) rem ====---- Run a command as an Administrator from the Windows command line set "Driver=%~d0" set "FilePath=%~p0" %ComSpec% /C powershell "Start-Process cmd -Verb RunAs -ArgumentList '/c exit '" && cd "%Driver%%FilePath%" cd "%Driver%%FilePath%" %Driver% rem ====---- 1. Config_ini set ConfFile=%~n0 set Config_ini=%Driver%%FilePath%%ConfFile%.ini rem ==== Read Config_ini call :ReadiniFile rem ====---- 2. Set Variable name call :SetVariable rem ==== Code page For /f "tokens=2 delims=:" %%G in ('chcp') do set chcp_Code=%%G rem ==== language call :MsgSet rem ==== ColorSet call :ColorSet rem ====---- 3. Download Offiec 2021. ODT is Office Deployment Tool if %AutoToRun% EQU 0 ( call :SeleToRun "%Input_ODT%" ) else ( set /a IsToRun=1 ) if %IsToRun% NEQ 0 ( rem ==== Download ODT call :RunCurl call :SetupExtractXml call :CreateXMLConfig echo. ) rem %ExtractPath%\setup.exe /download %xmlFile% if %AutoToRun% EQU 0 ( call :SeleToRun "%Input_Msg%" ) else ( set /a IsToRun=1 ) rem ====---- Office 2021 1.78G if %IsToRun% NEQ 0 ( call :SetupDownloadXml ) rem ====---- OfficeData call :GetOfficeData echo OfficeData = %OfficeData% rem %ExtractPath%\setup.exe /configure %xmlFile% rem ====---- 4. Install Office 2021 if not exist "%ProgramFiles%\Microsoft Office\root\Office16\misc.exe" ( call :SetupConfigXml ) rem ====---- 5. Activate Office if exist "%ProgramFiles%\Microsoft Office\Office16\ospp.vbs" ( call :Activate call :Sel_Server rem ====---- 6. CopyLink and Status call :CopyLink call :Office2021Activate call :CD_Office16 call :Dstatus ) else ( call :OsppvbsError ) rem ====---- 7. Reinstall Office 2021 if not exist "%ExtractPath%\InstallOffice2021.bat" ( goto END ) set /a IsToRun=0 if %AutoToRun% EQU 0 ( call :SeleToRun "%Input_runMsg%" ) if %IsToRun% NEQ 0 ( if %AutoToRun% EQU 0 ( call :SetupConfigXml timeout /t 10 ) ) rem ====---- 8. End goto END :ColorSet rem ==== 2 Normal Background set "ClolorBlue_NB=" set "ClolorMagenta_NB=" rem ==== 3 Bright Text set "ClolorGreen_BT=" set "ClolorYellow_BT=" set "ClolorMagenta_BT=" rem ==== 0 DefaultClolor set "DefaultClolor=" exit /b :MsgSet rem echo %chcp_Code% if /i %chcp_Code% EQU 950 ( set "Input_ODT=你要下載 Office Deployment Tool 的安裝程式嗎 ? 輸入 yes 或 no (y/n):" set "Input_Msg=你要下載 Microsoft Office LTSC 專業增強版 2021 的程式嗎 ? 輸入 yes 或 no (y/n):" set "Input_runMsg=你要執行安裝Office的 InstallOffice2021.bat嗎 ? 輸入 yes 或 no (y/n):" ) else ( set "Input_ODT=Do you want to download the Office Deployment Tool installer? Enter yes or no (y/n):" set "Input_Msg=Do you want to download the Microsoft Office LTSC Professional Plus 2021 program? Enter yes or no (y/n):" set "Input_runMsg=Do you want to execute InstallOffice2021.bat to install Office? Enter yes or no (y/n):" ) exit /b :SeleToRun set Input_ToRun= set /a IsToRun=0 set SeleToRun_MSG=%~1% set /p Input_ToRun=%ClolorMagenta_NB%%SeleToRun_MSG%%DefaultClolor% if not '%Input_ToRun%'=='' set Input_ToRun=%Input_ToRun:~0,1% if /i '%Input_ToRun%'=='y' ( set /a IsToRun+=1 ) else ( set /a IsToRun=0 ) if '%Input_ToRun%'=='' ( set /a IsToRun=0 ) exit /b :CreateXMLConfig if not exist %ExtractPath%\nul ( mkdir %ExtractPath% echo. ) rmdir /Q %PUBLIC%\desktop\OfficeProPlus2021 mklink /J %PUBLIC%\desktop\OfficeProPlus2021 "%ExtractPath%" echo ^ >%xmlFile% echo ^ >>%xmlFile% echo ^ >>%xmlFile% echo ^ >>%xmlFile% echo ^ >>%xmlFile% echo ^ >>%xmlFile% echo ^ >>%xmlFile% echo ^ >>%xmlFile% echo ^ >>%xmlFile% echo ^ >>%xmlFile% echo ^ >>%xmlFile% echo ^ >>%xmlFile% echo ^ >>%xmlFile% echo ^ >>%xmlFile% exit /b :SetupExtractXml rem ==== %HOMEDRIVE%%HOMEPATH%\Downloads\officedeploymenttool_16026-20170.exe /extract:%extractPath% /quiet %PathFilename% /extract:%extractPath% /quiet %HOMEDRIVE% cd %extractPath% if not exist %ExtractPath%\InstallOffice2021.bat ( rem echo %ExtractPath%\setup.exe /configure %xmlFile% > %ExtractPath%\InstallOffice2021.bat echo @echo off > %ExtractPath%\InstallOffice2021.bat echo set "Driver=%%~d0" >> %ExtractPath%\InstallOffice2021.bat echo set "FilePath=%%~p0" >> %ExtractPath%\InstallOffice2021.bat echo "%%Driver%%%%FilePath%%setup.exe" /configure "%%Driver%%%%FilePath%%ProPlus2021Volume.xml" >> %ExtractPath%\InstallOffice2021.bat echo rem %ExtractPath% >> %ExtractPath%\InstallOffice2021.bat ) exit /b :SetupDownloadXml %HOMEDRIVE% cd %extractPath% echo Download Office Data: %OfficeData% Data File Size: %DataFileSize% echo %ExtractPath%\setup.exe /download %xmlFile% %ExtractPath%\setup.exe /download %xmlFile% exit /b :SetupConfigXml %HOMEDRIVE% cd %extractPath% echo %ExtractPath%\setup.exe /configure %xmlFile% %ExtractPath%\setup.exe /configure %xmlFile% exit /b :Activate rem explorer "http://MSGuides.com" 2023-03-03 title Activate Microsoft Office 2021 ALL versions for FREE! Run as administrator. echo. echo #Project: Activating Microsoft software products for FREE without software echo. echo #Supported products: echo - Microsoft Office Professional 2021 echo - Microsoft Office Professional Plus 2021 if exist "%ProgramFiles%\Microsoft Office\Office16\ospp.vbs" ( cd /d "%ProgramFiles%\Microsoft Office\Office16" ) if exist "%ProgramFiles(x86)%\Microsoft Office\Office16\ospp.vbs" ( cd /d "%ProgramFiles(x86)%\Microsoft Office\Office16" ) for /f %%x in ('dir /b ..\root\Licenses16\ProPlus2021VL_KMS*.xrm-ms') do ( cscript ospp.vbs /inslic:"..\root\Licenses16\%%x" ) cscript //nologo ospp.vbs /setprt:1688 echo. echo Activating your Office... cscript //nologo ospp.vbs /unpkey:6F7TH echo. rem ProPlus2021Volume Office LTSC Professional Plus 2021 - Volume License FXYTK-NJJ8C-GB6DW-3DYQT-6F7TH cscript //nologo ospp.vbs /inpkey:FXYTK-NJJ8C-GB6DW-3DYQT-6F7TH || goto NotSupported echo. set i=1 exit /b :Sel_Server if %i%==1 set KMS_Sev=kms.catqu.com if %i%==2 set KMS_Sev=kms.loli.beer if %i%==3 set KMS_Sev=kms.loli.best if %i%==4 goto NotSupported echo %KMS_Sev% cscript //nologo ospp.vbs /sethst:%KMS_Sev% cscript //nologo ospp.vbs /act | find /i "Product activation successful" rem echo %errorlevel% if %errorlevel% equ 0 goto Halt echo The connection to %KMS_Sev% server failed! Trying to connect to another one... set /a i+=1 rem LSS - less than if %i% LSS 5 ( goto Sel_Server ) exit /b :NotSupported echo Sorry! Your version is not supported echo Please try installing the latest version here: echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! echo Unable to connect the server, failed to activation echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! goto End :Halt echo ============================================================================ echo Microsoft Office 2021 activation successful echo ============================================================================ exit /b :OsppvbsError if not exist "%ProgramFiles%\Microsoft Office\Office16\ospp.vbs" ( echo Can not found %ProgramFiles%\Microsoft Office\Office16\ospp.vbs timeout /t 3 ) exit /b :CD_Office16 if exist "%ProgramFiles%\Microsoft Office\Office16\ospp.vbs" ( cd /d "%ProgramFiles%\Microsoft Office\Office16" ) if exist "%ProgramFiles(x86)%\Microsoft Office\Office16\ospp.vbs" ( cd /d "%ProgramFiles(x86)%\Microsoft Office\Office16" ) exit /b :Dstatus cscript //nologo ospp.vbs /dstatus exit /b :CopyLink rem ==== Copy Office lnk to Desktop if not exist "%PUBLIC%\desktop\Office 2021\" ( mkdir "%PUBLIC%\desktop\Office 2021" ) if exist "%ProgramData%\Microsoft\Windows\Start Menu\Programs\Word.lnk" ( if not exist "%PUBLIC%\desktop\Office 2021\Word.lnk" ( copy /Y "%ProgramData%\Microsoft\Windows\Start Menu\Programs\Access.lnk" "%PUBLIC%\desktop\Office 2021\" copy /Y "%ProgramData%\Microsoft\Windows\Start Menu\Programs\Excel.lnk" "%PUBLIC%\desktop\Office 2021\" copy /Y "%ProgramData%\Microsoft\Windows\Start Menu\Programs\OneDrive.lnk" "%PUBLIC%\desktop\Office 2021\" copy /Y "%ProgramData%\Microsoft\Windows\Start Menu\Programs\OneNote.lnk" "%PUBLIC%\desktop\Office 2021\" copy /Y "%ProgramData%\Microsoft\Windows\Start Menu\Programs\Outlook.lnk" "%PUBLIC%\desktop\Office 2021\" copy /Y "%ProgramData%\Microsoft\Windows\Start Menu\Programs\PowerPoint.lnk" "%PUBLIC%\desktop\Office 2021\" copy /Y "%ProgramData%\Microsoft\Windows\Start Menu\Programs\Publisher.lnk" "%PUBLIC%\desktop\Office 2021\" copy /Y "%ProgramData%\Microsoft\Windows\Start Menu\Programs\Word.lnk" "%PUBLIC%\desktop\Office 2021\" dir "%PUBLIC%\desktop\Office 2021\*.lnk" ) ) exit /b :Office2021Activate rem ==== Microsoft Office 2021 Activate.zip if exist %HOMEDRIVE%\PortableApps\Shortcut\Shortcut.exe ( set "Shortcut=%HOMEDRIVE%\PortableApps\Shortcut\Shortcut.exe" ) else ( echo Can not find %HOMEDRIVE%\PortableApps\Shortcut\Shortcut.exe exit /b ) if /i exist "%SystemDrive%\Program Files\Microsoft Office\root\Office16\1028\MSAIN.DLL" ( call :Checkdir %PUBLIC%\desktop\Office 2021\ ) else ( echo Can not find %SystemDrive%\Program Files\Microsoft Office\root\Office16\1028\MSAIN.DLL exit /b ) if exist "%HOMEDRIVE%\PortableApps\Microsoft Office 2021 Activate\Activate Office 2021.cmd" ( %Shortcut% /T:"%HOMEDRIVE%\PortableApps\Microsoft Office 2021 Activate\Activate Office 2021.cmd" /F:"%PUBLIC%\desktop\Office 2021\Activate Office 2021.cmd.lnk" /I:"%HOMEDRIVE%\Program Files\Microsoft Office\root\Office16\1028\MSAIN.DLL" /A:c %Shortcut% /T:"%HOMEDRIVE%\PortableApps\Microsoft Office 2021 Activate\Detect office 2021 activation status.cmd" /F:"%PUBLIC%\desktop\Office 2021\Detect office 2021 activation status.cmd.lnk" /I:"%HOMEDRIVE%\Program Files\Microsoft Office\root\vfs\ProgramFilesCommonX64\Microsoft Shared\OFFICE16\MSO.DLL" /A:c %Shortcut% /T:"%HOMEDRIVE%\PortableApps\Microsoft Office 2021 Activate\Activate Office 365 ProPlus.cmd" /F:"%PUBLIC%\desktop\Office 2021\Activate Office 365 ProPlus.cmd.lnk" /I:"%HOMEDRIVE%\Program Files\Microsoft Office\root\Office16\1028\MSAIN.DLL" /A:c ) exit /b :ReadiniFile rem ====---- setlocal enabledelayedexpansion rem ====---- Read ini File if not exist "%Config_ini%" ( echo Cant Find %Config_ini% goto End ) For /F "tokens=1* delims==" %%I in ('findstr /i "^[A-z]" "%Config_ini%"') do ( set "%%I=%%J" rem if defined %%I ( rem echo %%I = %%J rem ) if defined %%I ( set II=%%I :: Show only URL and Download if /i %%I EQU URL (echo %%I = %%J) if /i %%I EQU Download (echo %%I = %%J) if /i %%I EQU FileName (echo %%I = %%J) if /i %%I EQU Version (echo %%I = %%J) if /i %%I EQU FileDate (echo %%I = %%J) ) ) echo. exit /b :SetVariable set "ExtractPath=%PUBLIC%\Downloads\OfficeProPlus2021\%Version%" set "xmlFile=%ExtractPath%\ProPlus2021Volume.xml" set Input_run= set /a IsToRun=0 set chcp_Code= set "PathFilename=%USERPROFILE%\Downloads\%FileName%" exit /b :RunCurl rem ====---- curl.exe :SetVariable ---- PathFilename if not defined Download ( echo %ClolorRed_NT%Not defined Download%DefaultClolor% ) rem ====---- MediaFire rem if defined MediaFire ( rem goto RunMediaFire rem ) if not exist "%PathFilename%" ( curl.exe -LJR --url "%Download%" -o "%PathFilename%" -k --show-error --fail ) if %errorlevel% NEQ 0 ( echo.%ClolorRed_BT% echo An curl error was found : "%Download%" echo.%DefaultClolor% pause ) if exist "%PathFilename%" ( echo Download: "%PathFilename%" dir "%pathFilename%" | findstr /I "%Filename%" ) exit /b :Checkdir rem ====---- https://stackoverflow.com/questions/18639663/how-to-pass-command-line-parameters-with-space-in-batch-file if exist "%*" ( exit /b ) if not exist "%*" ( mkdir "%*" ) if exist "%*" ( echo %* Created ) exit /b :GetOfficeData setlocal enabledelayedexpansion For /f "tokens=2 delims=_" %%I in ('dir %ExtractPath%\Office\Data\v64_*.cab /b') do ( set II=%%I set II=!II:~0,-4! ) set OfficeData=!II! setlocal exit /b :End echo. rem echo %extractPath% if exist "%ExtractPath%\InstallOffice2021.bat" ( call Explorer.exe /root,"%extractPath%" ) else ( call Explorer.exe /root,"%FilePath%" ) cd %Driver%%FilePath% %Driver% %ComSpec% /%EndCmd%